<?php

namespace Game\Core;

use Game\Helper\Log;
use Game\Helper\Match;

/**
 * 
 */
class Season 
{

    /**
     * Variavel com os nomes das temporadas carregadas
     */
    protected $season = array();

    /**
     * Pasta para partidas prestes a começar
     */
    protected $dir_start = 'Archives/Start/';

    /**
     * Pasta para partidas em andamento
     */
    protected $dir_play = 'Archives/Play/';


    public function __construct() {
        //while(TRUE) {
            //sleep(1);
            $retorno = $this->_checkSeason();

            if($retorno) {
                Log::createLog("Temporada iniciada");
                $this->_transferMatch($retorno, $this->dir_start, $this->dir_play);

                # === Partida
                $match = new Match($retorno, $this->dir_play);

                $match->play();

                Log::createLog("Temporada Finalizada");
            }
        //}
    }

    /**
     * Tansfere os arquivos as partidas
     * @param $archives Array com a lista de aprtida
     * @param $to Local do arquivo
     * @param $from Local do destino
     */
    public function _transferMatch(array $archives, $to, $from) {
        # === Movimenta os arquivos
        try {
            foreach ($archives as $a) {             
                copy($to.$a, $from.$a);
                Log::createLog("Arquivo: ".$a." foi copiado para a pasta => ".$from);
            }
        }
        catch(Exception $e){
            throw new Exception( 'Ocopereu um na hora de copiar os arquivos de partida', 0, $e);
        }

        # === Apara os arquvios
        /*try {
            foreach ($archives as $a) {             
                unlink($to.$a);
                Log::createLog("Arquivo: ".$a." foi deletado da pasta => ".$to);
            }
        }
        catch(Exception $e){
            throw new Exception( 'Ocopereu um na hora de copiar os arquivos de partida', 0, $e);
        }*/
    }

    /**
     * Verifica se existe arquivo de temporadas caso exista retorna um array com os nomes
     * @return Array()/FALSE
     */
    private function _checkSeason() {
        $diretorio = dir($this->dir_start);

        $retorno = array();

        while($arquivo = $diretorio->read()) {
            switch ($arquivo) {
                case '.':
                case '..':
                    continue;
                    break;
                default:
                    if(substr($arquivo,(strlen($arquivo)-6),strlen($arquivo)) == ".match") {
                        array_push($retorno, $arquivo);
                        Log::createLog('Arquivo: "' . $this->dir_start . $arquivo . '" foi encontrado.');
                    }
                    break;
            }
        }

        //var_dump($retorno);
        return (empty($retorno)) ? FALSE : $retorno;
    }
}
